/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sunsite.tools;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author mg
 */
public class DateHelper {
    /**
     * 获得当前日期的年份。
     * @return int 年份
     */
    public static int getNowYear() {
        return Calendar.getInstance().get(Calendar.YEAR);
    }

    /**
     * 获得给定日期的年份
     * @param dt 给定日期
     * @return int 年份
     * @throws NullPointerException 如果参数年份为null，抛出异常。
     */
    public static int getYear(Date dt) throws NullPointerException {
        if (dt == null) {
            throw new NullPointerException("日期参数为null");
        } else {
            Calendar cld = Calendar.getInstance();
            cld.setTime(dt);
            return cld.get(Calendar.YEAR);
        }
    }

     /**
     * 获得当前日期的月份。
     * @return int 月份
     */
    public static int getNowMonth() {
        return 1 + Calendar.getInstance().get(Calendar.MONTH);
    }

    /**
     * 获得给定日期的月份
     * @param dt 给定日期
     * @return int 月份（1-12）
     * @throws NullPointerException 如果参数年份为null，抛出异常。
     */
    public static int getMonth(Date dt) throws NullPointerException {
        if (dt == null) {
            throw new NullPointerException("日期参数为null");
        } else {
            Calendar cld = Calendar.getInstance();
            cld.setTime(dt);
            return 1 + cld.get(Calendar.MONTH);
        }
    }

    /**
     * 获得当前日期的当月的天数。
     * @return int 当月的天数
     */
    public static int getNowDate() {
        return Calendar.getInstance().get(Calendar.DATE);
    }

    /**
     * 获得给定日期的当月的天数
     * @param dt 给定日期
     * @return int 当月的天数
     * @throws NullPointerException 如果参数年份为null，抛出异常。
     */
    public static int getDate(Date dt) throws NullPointerException {
        if (dt == null) {
            throw new NullPointerException("日期参数为null");
        } else {
            Calendar cld = Calendar.getInstance();
            cld.setTime(dt);
            return cld.get(Calendar.DATE);
        }
    }

    public static long transferDate(String date_String) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            java.util.Date dt = sdf.parse(date_String);
            return dt.getTime();
        } catch (ParseException ex) {
            Logger.getLogger(DateHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
        return 0;
    }

    public static Date FormatDate(Date dt){
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            java.util.Date dtf = sdf.parse(dt.toString());
            return dtf;
        } catch (ParseException ex) {
            Logger.getLogger(DateHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}
